#if defined(_MSC_VER)
#pragma once
#endif

#ifndef LM_CAMERA_PERSPECTIVE_H
#define LM_CAMERA_PERSPECTIVE_H

#include "../core/camera.h"

class PerspectiveCamera : public ProjectiveCamera
{
	PerspectiveCamera(const Transform &w2c, float cNear, float cFar, float sOpen, float sClose, float lensr, float focald, float fov, Reference<Film> fm);
	float GenerateRay(const Point2 &imageSample, const Point2 &lensSample, float timeSample, Ray *ray) const;
	float GenerateDifferentialRay(const Point2 &imageSample, const Point2 &lensSample, float timeSample, RayDifferential *ray) const;
	bool NeedLensSample() const;
	std::string ToString() const;
	Vector3 dxCamera, dyCamera;
	float fovAngle;
};
#endif	// LM_CAMERA_PERSPECTIVE_H